<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 1.如何证明js执行是单线程的？
		  setTimeout()的回调函数是在主线程执行的
		  定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行
		2.为什么js要用单线程模式，而不用多线程模式？
		  JavaScript的单线程，与它的用途有关
		  作为浏览器脚本语言，JavaScript的主要用途是与用户互动，以及操作DOM
		  这决定了它只能是单线程，否则会带来很复杂的同步问题
		
		3.代码的分类：
		  初始化代码
		  回调代码
		4.js引摩执行代码的基本流程
		  先执行初始化代码：包含一些特别的代码  回调函数(异步执行)
		    设置定时器
			绑定监听
			发送ajax请求
	      后面在某个时刻才会执行回调代码 -->
		
		<script type="text/javascript">
			setTimeout(function () {
				console.log('timeout 2222')
				alert('222222')
			}, 2000)
			setTimeout(function () {
				console.log('timeout 1111')
				alert('111111')
			}, 1000)
			setTimeout(function () {
				console.log('timeout 0000')
			}, 0)
			function fn() {
				console.log('fn()')
			}
			fn()
			
			console.log('alert()之前')
			alert('------')//暂停当前主线程的执行，同时暂停计时，点击确定后，恢复程序执行和计时
			console.log('alert()之后')
		</script>
	</body>
</html>
